package lagou.homework.lagouhomework.Unit2.q1.code;

import java.util.Random;
public class ArrayArray {
   private int [][] arr1 = new int[16][16];
   // 数组中的每个元素随机生成
   Random rd = new Random();

   // 给这个二维数组中的每个元素赋值的方法
   public void  setNum(){
       for(int i=0;i<16;i++){
           for(int j=0;j<16;j++){
               // 随机生成一个0-9 的数字，给二维数组中的每个元素赋值
               int r1 = rd.nextInt(10);
               arr1[i][j] = r1;
           }

       }


   }

   //  打印这个二维数组
   public void showArr(){
       System.out.println("打印这个二维数组：");
       for(int i=0;i<16;i++){
           for(int j=0;j<16;j++){
               if(j==15){
                   System.out.println(arr1[i][j]);  //  如果是每一行最后一个元素，则需要换行
               }else{
                   System.out.print(arr1[i][j] + " "); //  如果不是每一行最后一个元素，则加一个空格来分隔这行的其他元素，打印后无需换行
               }

           }
       }

   }


   //  获取这个数组所有元素的和，用返回值的方法供调用返回（练习带有返回值类型函数）
    public  int getSumAll(){
       int sumAll = 0;
       for(int i=0;i<16;i++) {
           for(int j =0;j<16;j++){
               sumAll += arr1[i][j];
           }

       }
       return sumAll;

   }

   // 获取这个二维数组中每一行的和并打印结果
   public void getSumRow(){
       System.out.println("打印这个二维数组每一行的和，结果如下：");
       for(int i=0;i<16;i++) {
           int sumRow = 0;
           for(int j =0;j< 16;j ++){
               sumRow += arr1[i][j];
           }
           System.out.println("第"+ (i+1) +"行的所有元素的和为：" + sumRow);

       }

   }

    // 获取这个二维数组中每一列的和并打印结果
    public void getSumCol(){
        System.out.println("打印这个二维数组每一列的和，结果如下：");
        for(int j=0;j<16;j++) {
            int sumCol = 0;
            for(int i =0;i< 16;i++){
                sumCol += arr1[i][j];
            }
            System.out.println("第"+ (j+1) +"列的所有元素的和为：" + sumCol);

        }

    }


    // 获取这个二维数组中左上角到右下角的对角线上所有元素的和并打印结果
    public void getSumLine1(){
        int sumLine1 = 0;
        for(int i =0;i< 16;i++){
            sumLine1 += arr1[i][i];                  //  左上角到右下角的对角线上的每一个元素的横坐标和纵坐标是相等的，所以只要循环一轮取所有横坐标与纵坐标相等的元素的和即可
        }
        System.out.println("这个二维数组的左上角到右下角的对角线上所有元素的和为：" + sumLine1);
    }


    // 获取这个二维数组中右上角到左下角的对角线上所有元素的和并打印结果
    public void getSumLine2(){
        int sumLine2 = 0;
        for(int i =0;i< 16;i++){
            sumLine2 += arr1[15-i][i];          // 右上角到左下角的对角线上的每一个元素的横坐标和纵坐标的和是15，所以只要循环一轮取所有横坐标与纵坐标和为15的元素的和即可
        }
        System.out.println("这个二维数组的右上角到左下角的对角线上所有元素的和为：" + sumLine2);
    }



}
